﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MobileMake.Models
{
    public interface IDataProvider
    {
        //portal
        Portal AddPortal(Portal portalToAdd);
        void DeletePortal(Portal portalToDelete);
        Portal UpdatePortal(Portal portalToUpdate);
        Portal GetPortal(int portalId);
        Portal GetPortalByTab(int tabId);
        List<Portal> GetPortals();
        
        //tab
        Tab AddTab(Tab tabToAdd);
        Tab UpdateTab(Tab tabToUpdate);
        void DeleteTab(Tab tabToDelete);
        List<Tab> GetTabs(int portalId);
        List<Tab> GetAllTabs();
        Tab GetTab(int tabId);
        List<TabModule> GetPortalTabModules(int portalId, int tabId);
        List<TabModule> GetTabModules(int tabId);        
        List<string> GetTabPanes(int tabId);//TODO implementar SP

        List<TabCondition> GetTabConditions(int tabId);
        TabCondition GetTabCondition(int moduleId, int tabConditionId);
        TabCondition AddTabCondition(TabCondition tabConditionToAdd);
        TabCondition UpdateTabCondition(TabCondition tabConditionToUpdate);
        void DeleteTabCondition(TabCondition tabConditionToDelete);

        //module
        List<Module> GetAllModules();
        List<Module> GetModules(int portalId);
        List<TabModule> GetAllTabsModules(int portalId);
        Module GetModule(int moduleId, int tabId);
        Module AddModule(Module moduleToAdd);
        Module UpdateModule(Module moduleToUpdate);
        void DeleteModule(Module moduleToDelete);
        List<TabModule> GetTabModuleOrder(int tabId, string paneName);
        void UpdateModuleOrder(int tabId, int moduleId, int moduleOrder, string paneName);

        TabModule AddTabModule(TabModule tabModuleToAdd);
        TabModule UpdateTabModule(TabModule tabModuleToUpdate);
        void DeleteTabModule(TabModule tabModuleToDelete);

        List<ModuleSetting> GetModuleSettings(int moduleId);
        ModuleSetting GetModuleSetting(int moduleId, string settingName);
        ModuleSetting AddModuleSetting(ModuleSetting moduleSettingToAdd);
        ModuleSetting UpdateModuleSetting(ModuleSetting moduleSettingToUpdate);
        void DeleteModuleSetting(ModuleSetting moduleSettingToDelete);

        List<TabModuleCondition> GetTabModuleConditions(int moduleId);
        TabModuleCondition GetTabModuleCondition(int moduleId, int tabModuleConditionId);
        TabModuleCondition AddTabModuleCondition(TabModuleCondition tabModuleConditionToAdd);
        TabModuleCondition UpdateTabModuleCondition(TabModuleCondition tabModuleConditionToUpdate);
        void DeleteTabModuleCondition(TabModuleCondition tabModuleConditionToDelete);

    }
}
